The Background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent it is described in this background section, as well as aspects of the description which may not otherwise qualify as prior art at the time of filing, are neither expressly or impliedly admitted as prior art against the present disclosure.
A redundant array of independent disks (RAID) system redundantly stores data on multiple hard disks. In some RAID levels, data blocks are split and stored on different disks, which reduces data storage and retrieval latency. Multiple disks also tend to increase mean time between failures (MTBF) and increases fault tolerance.
The RAID system appears to an accessing or host device as a single logical hard disk drive. The RAID system may employ disk striping, which involves partitioning the storage space of each drive into units. The size of the units will vary depending upon the application from a sector (512 bytes) up to several megabytes. The stripes of all the disks are typically interleaved and addressed in order.
There are many types of RAID systems in addition to a non-redundant array (RAID-0). In RAID-0, striping is employed without redundancy of data. It offers the best performance but no fault-tolerance. In RAID-1, disk mirroring is used without striping and at least two drives are required to allow duplication during storage of data. Read performance is improved since either disk can be read at the same time. Write performance is the same as single disk storage. RAID-1 provides the best performance and the best fault-tolerance in a multi-user system.
In RAID-2, striping across disks is used. Some disks store error checking and correcting (ECC) information. In RAID-3, striping is used and one drive is dedicated to storing parity information. The embedded error checking (ECC) information is used to detect errors. Data recovery is accomplished by calculating the exclusive OR (XOR) of the information recorded on the other drives. Since an I/O operation addresses all drives at the same time, RAID-3 cannot overlap I/O. As a result, RAID-3 is best for single-user systems with long record applications.
In RAID-4, large stripes are used. Records can be read from any single drive. This allows overlapped I/O for read operations. Since write operations update the parity drive, no I/O overlapping is possible. In RAID-5, a rotating parity array is used, which addresses write limitations of RAID-4. Thus, read and write operations can be overlapped. RAID-5 stores parity information but does not use redundant data. However, the parity information can be used to reconstruct data. RAID-5 requires at least three and usually five disks for the array. RAID-5 is best for multi-user systems in which performance is not critical or which do few write operations.
RAID-6 is similar to RAID-5 except that a second parity scheme that is distributed across different drives is used. RAID-6 offers high fault- and drive-failure tolerance. In RAID-7, a real-time embedded operating system and controller are used. RAID-7 uses caching via a high-speed bus and other characteristics of a stand-alone computer.
RAID-10 combines RAID-0 and RAID-1. There are two subtypes: In RAID-0+1, data is organized as stripes across multiple disks, and then the striped disk sets are mirrored; and in RAID-1+0, the data is mirrored and the mirrors are striped.
In RAID-50 (or RAID-5+0), a series of RAID-5 groups are used. The groups are striped in RAID-0 fashion to improve RAID-5 performance without reducing data protection. In RAID-53 (or RAID-5+3), striping (in RAID-0 style) is used for RAID-3's virtual disk blocks. This offers higher performance than RAID-3 but at much higher cost.
When the host device sends a data block for storage, RAID processing is performed for the selected RAID approach. The RAID processing may include redundancy and recovery processing (such as error checking and correcting (ECC)) for the selected RAID level and/or other processing.
In one approach, a single central processing unit (CPU) receives data blocks from another device. The CPU handles all of the RAID processing including ECC. With this approach, the CPU can often rate-limit data storage since processing relating to ECC can be variable and time consuming. In other words, processing in the CPU may cause a bottleneck and increase latency. With a single CPU, the RAID construction for one data block needs to be completed before a subsequent data block can be processed.